iT邦幫忙

6

【我可以你也可以的Node.js】第七篇 - 第一次用EventEmiter就用來做壞壞的事ヽ(́◕◞౪◟◕‵)ノ

  • 分享至 

  • xImage
  •  

嗨各位大大~
我是Robin
這週來分享學習EventEmiter,並且來做壞壞的事ヽ(́◕◞౪◟◕‵)ノ。


本篇學習目標◑ω◐:

  1. 什麼是EventEmiter?(,,・ω・,,)
  2. 他能幹嘛?(✪ω✪)
  3. 來做壞壞的事ლ(́◕◞౪◟◕‵ლ)

什麼是EventEmiter?(,,・ω・,,)

當我打開書,看到一堆名詞包括process,
作者都會寫說都是繼承於EventEmiter什麼的。

心裏OS : 大哥! 不是每個人都知道你在公啥好嗎Orz
然後繼續讀下去詳情請洽EventEmiter章節
嗯~
你有要說~但是為什麼你不早說

這就是我對EventEmiter的第一印象 (´ΘωΘ`)
然後接著是第二印象,是我把名詞拿去Google翻譯事件....發射器?

大哥...你到底是什麼啦,發大財我知道但是發射器是什麼?Orz...
說實話直到我要寫這篇文章才知道原來他不叫發射器
啊...原來是我直接ignore底下原文的提示(,゚Д゚)

所以我說...

其實認真思考過後他名稱發射器或是廣播器都說的過去欸(ง๑ •̀_•́)ง

其實這章節重點只有底下幾行xDD
他其實就是Node之中你可以自定義觸發條件和監聽的一個東西
就是有點像是我們平常在js或是vb之類的常用的Listener
我的感覺啦ヽ(́◕◞౪◟◕‵)ノ
聽起來是不是不錯!? (突然想到蠟筆小新)

他能幹嘛?(✪ω✪)

這個EventEmitter類別,廣泛地用被繼承在各種模組,例如之後會講到process的標準輸出入(I/O)。

實際上他主要可以使用兩個方法來操作

  1. 監聽某事件
    EventEmitter.on('<什麼事件>',<如果觸發了要幹嘛?(callback)>)
  2. 發送某事件
    EventEmitter.emit('<要發送什麼事件>','<要傳遞什麼值>','發送時要做什麼?')

是不是看起來是非常簡單?
看起來簡單但是卻能做壞壞的事真的不容易,
我們接著看這篇主要要教你做的壞壞的事~ლ(́◕◞౪◟◕‵ლ)

來做壞壞的事ლ(́◕◞౪◟◕‵ლ)

既然知道他能像JS一樣監聽某事件,並且觸發。
那我們就來做一點壞壞的事吧!

開始做壞壞的事

  1. 匯入Event模組的EventEmitter
var eventEmitter = require('events').EventEmitter
  1. 新建一個 EventEmitter的函式到addEvent變數
var addEvent = new eventEmitter();
  1. 新增一個定時器並使用剛剛新建的變數使用emit發送訊息
setInterval(function () { addEvent.emit('紅綠燈', "右轉", console.log("紅燈要幹嘛?")) }, 1000);
  1. 新增一個監聽"紅綠燈"事件的監聽器
addEvent.on('紅綠燈', function (event) {
    console.log(`要 (((o(*゚▽゚*)o)))... ${event}!\n`)
});

執行結果:

是不是很壞!?ヽ(́◕◞౪◟◕‵)ノ
相信各位看到這一定都會覺得

我看了這麼久,你給我看這個?

完整Code:

var eventEmitter = require('events').EventEmitter

var addEvent = new eventEmitter();
setInterval(function () { addEvent.emit('紅綠燈', "右轉", console.log("紅燈要幹嘛?")) }, 1000);

addEvent.on('紅綠燈', function (event) {
    console.log(`要 (((o(*゚▽゚*)o)))... ${event}!\n`)
});

本週心得

我一直以以下這句經典名言當作我寫程式的動力

動機就是Push你學習的糧食

用Youtuber大多數創作者或媒體會下的標題來騙流量看回不會高一點(?

發現上篇幹話幾乎沒有似乎也沒有比較多人觀看xDD
然後說實話質量也很差QQ
看來我之後只能用幹話充滿我的文章了。(重點好像有點搞錯)

免責聲明: 以上資訊不確定是否屬實,謹供各位大大斟酌參考~

最近在公司每個人都喜歡在最後加這句,表示沒有要對於剛剛說的話或是貼的資訊負責xDD
意外覺得滿實用的

參考文獻

Banner設計 - canva
Node官方 Document
Day11 - Node.js EventEmitter
我買的這本書


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
1
Sam
iT邦新手 4 級 ‧ 2020-03-23 11:02:31

朝聖,這個有壞!

話說你的 terminal 配色很好看耶,是你自己配的嗎?

Robin iT邦新手 2 級 ‧ 2020-03-23 22:58:17 檢舉

有壞到就好xDDD
其實...顏色
我是用預設的哈哈哈哈哈哈
我是用oh my zsh的 bira theme -> link

Sam iT邦新手 4 級 ‧ 2020-03-24 10:20:13 檢舉

這主題我就收下了 感謝~~

1
screenleon
iT邦新手 1 級 ‧ 2020-03-23 16:08:17

我覺得你文章寫起來有自己的風格也很不錯啊
看的人也會蠻輕鬆的

Robin iT邦新手 2 級 ‧ 2020-03-23 23:00:01 檢舉

可是不是每次都有那多的幹話靈感xDD
我想幹話的時間在文章內都至少佔了75%以上 /images/emoticon/emoticon02.gif
有時候一直在想,我到底在自嗨什麼Orz
不過還是感謝各位大大真的有在看xDD

1
Robert Chen
iT邦新手 5 級 ‧ 2020-05-28 23:18:54

應該是酌參(斟酌參考)
XD

Robin iT邦新手 2 級 ‧ 2020-07-23 09:53:29 檢舉

非常抱歉QQ 已更正

我要留言

立即登入留言